package com.group6.companymanagement.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.group6.companymanagement.entity.Dept;
import com.group6.companymanagement.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
public class DeptController {
    @Autowired
    DeptService deptService;

    // 查询所有
    @GetMapping("/depts")
    public String list(Model model, @RequestParam(value="pageNum",defaultValue="1")Integer pageNum) {
        if(ObjectUtils.isEmpty(pageNum)){
            pageNum= 1;
        }
        //设置分页(当前页，和每页显示数据条数)
        PageHelper.startPage(pageNum, 10);

        //查找数据
        List<Dept> depts = deptService.getAllDepts();
        //将查找出的结果封装到PageInfo对象中，这个对象包含了 emps集合和关于分页的方法，如下
        //pageInfo.getPageNum();
        //pageInfo.getPages(); 得到总页数
        //pageInfo.getNextPage(); 得到下一页
        //pageInfo.getPrePage(); 得到前一页
        PageInfo<Dept> pageInfo=new PageInfo<>(depts);
        //用Model传递对象到page页面
        model.addAttribute("pageInfo",pageInfo);
        return "dept/dept";
    }

    // 来到添加页面
    @GetMapping("/dept")
    public String toAddPage(Model model) {
        // 来到添加页面

        return "dept/add";
    }

    // 合同添加
    // SpringMVC 自动将请求参数和入参对象的属性进行一一绑定，要求了请求参数的名字和javaBean入参的对象里面的属性名是一样的
    @PostMapping("/dept")
    public String addDept(Dept dept) {
        // 保存
        deptService.addDept(dept);
        // 来到列表页面
        // redirect: 表示重定向到一个地址 /代表当前项目路径
        // forward: 表示转发到一个地址
        return "redirect:/depts";
    }

    // 来到修改页面
    @GetMapping("/dept/{id}")
    public String toUpdatePage(@PathVariable("id") Integer id, Model model) {
        Dept dept = deptService.getDeptById(id);
        model.addAttribute("dept",dept);

        // 回到修改页面（add是一个修改添加二合一的页面）
        return "dept/add";
    }

    // 修改，需要提交id
    @PutMapping("/dept")
    public String updateDept(Dept dept) {
        deptService.updateDept(dept);
        return "redirect:/depts";
    }

    //删除
    @DeleteMapping("/dept/{id}")
    public String deleteDeptById(@PathVariable("id") Integer id){
        deptService.deleteDeptById(id);
        return "redirect:/depts";
    }
}
